package tt.dz.egobus.servicemanager.service;

import tt.dz.egobus.api.ResponseBack;
import tt.dz.egobus.api.commoncenter.bean.ConfigBack;
import tt.dz.egobus.api.commoncenter.bean.ConfigTypeBack;

import java.util.List;

/**
 * @author Anson
 * @date 17-8-11
 * @name 系统配置服务接口
 * @since 1.0.6
 */
public interface SystemConfigManagerService {

    /**
     * 返回所有配置信息的业务码和业务说明
     * 可以通过业务码来分别获取相应的配置信息列表
     *
     * @return 配置信息所有业务编码和详情
     * @date 2017-08-09
     * @since 1.0.6
     */
    ResponseBack<List<ConfigTypeBack>> getAllConfigTypeBack();

    /**
     * @param code 业务码
     *             <p>
     *             备注：
     *             1001 服务管理
     *             1002 公共服务
     *             1003 司机服务端
     *             1004 订单中心
     *             1005 用户终端
     *             1006 用户中心
     *             可以直接使用 ConfigType 枚举来赋值
     * @return 配置信息列表
     * @name 根据业务码获取相应的配置信息列表
     * @date 2017-08-09
     * @since 1.0.6
     */
    ResponseBack<List<ConfigBack>> getSystemConfig(int code);

    /**
     * 根据业务码和唯一key 获取相关配置信息
     *
     * @param code 业务编码
     *             <p>
     *             备注：
     *             1001 服务管理
     *             1002 公共服务
     *             1003 司机服务端
     *             1004 订单中心
     *             1005 用户终端
     *             1006 用户中心
     *             可以直接使用 ConfigType 枚举来赋值
     * @param key  唯一标识符 key
     * @return 相关的配置信息
     * @date 2017-08-09
     * @since 1.0.6
     */
    ResponseBack<String> getConfigValue(int code, String key);

    /**
     * 根据业务编码和唯一标识符 key
     * 来修改相应的配置信息
     *
     * @param code  业务编码
     *              <p>
     *              备注：
     *              1001 服务管理
     *              1002 公共服务
     *              1003 司机服务端
     *              1004 订单中心
     *              1005 用户终端
     *              1006 用户中心
     *              可以直接使用 ConfigType 枚举来赋值
     * @param key
     * @param value
     * @return
     */
    ResponseBack<ConfigBack> updateConfigValue(int code, String key, String value);

}
